/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Proveedor;
import sv.com.intesal.compra.sql.SQLProveedor;
import sv.com.intesal.conexion.cConexion;

/**
 *
 * @author andrew
 */
public class ProveedorControlador {

    public List<Proveedor> fillGrid() throws Exception {
        List<Proveedor> list = new ArrayList<Proveedor>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLProveedor.getProveedores).executeQuery();

            while (rs.next()) {
                Proveedor p = new Proveedor();
                p.setId_p(rs.getInt("id_p"));
                p.setCodigo_p(rs.getInt("id_p"));
                p.setNombre_p(rs.getString("empresa_p"));
                p.setEmpresa_p(rs.getString("empresa_p"));
                p.setContacto_p(rs.getString("contacto_p"));
                p.setNrc_p(rs.getString("nrc_p"));
                p.setNit_p(rs.getString("nit_p"));
                p.setTel_p(rs.getString("telefono_p"));
                p.setEmail_p(rs.getString("email_p"));
                p.setDireccion_p(rs.getString("direccion_p"));
                p.setLimite_credito_p(rs.getDouble("limite_credito_p"));
                p.setPlazo_p(rs.getInt("plazo_p"));
                p.setGiro_p(rs.getString("giro_p"));
                p.setPercepcion_p(rs.getString("aplicar_percepcion_p"));
                p.setFax_p(rs.getString("fax_p"));

                p.setNombre_pa(rs.getString("nombre_p"));
                p.setId_pa(rs.getInt("id_pa"));
                p.setId_pa2(rs.getInt("id_pa"));

                p.setNombre_d(rs.getString("nombre_d"));
                p.setId_d(rs.getInt("id_d"));
                p.setId_d2(rs.getInt("id_d"));

                p.setNombre_mu(rs.getString("nombre_mu"));
                p.setId_mu(rs.getInt("id_mu"));
                p.setId_mu2(rs.getInt("id_mu"));
                list.add(p);
            }
            rs.close();
            return list;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void mantenimientoProveedor(Proveedor pr) throws Exception {
        Connection cnn = cConexion.conectar();
        try {
            PreparedStatement ps = null;
            if (pr.getId_p() == null) {
                ps = cnn.prepareStatement(SQLProveedor.insertarProve);
            } else {
                ps = cnn.prepareStatement(SQLProveedor.modificarProve);
                ps.setInt(14, pr.getId_p());
            }
            ps.setInt(1, pr.getId_mu());
            ps.setString(2, pr.getNombre_p());
            ps.setString(3, pr.getContacto_p());
            ps.setString(4, pr.getNrc_p());
            ps.setString(5, pr.getNit_p());
            ps.setString(6, pr.getTel_p());
            ps.setString(7, pr.getEmail_p());
            ps.setString(8, pr.getDireccion_p());
            ps.setDouble(9, pr.getLimite_credito_p());
            ps.setInt(10, pr.getPlazo_p());
            ps.setString(11, pr.getGiro_p());
            ps.setString(12, pr.getPercepcion_p());
            ps.setString(13, pr.getFax_p());


            ps.executeUpdate();
            cnn.close();
            ps.close();

            Mensaje m = new Mensaje();
            if (pr.getId_p() == null) {
                m.message(m.getIinformation());
            } else {
                m.message(m.getImodificada());
            }

        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public Proveedor getProveedor(Integer codigo_p) throws Exception {

        Connection cnn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLProveedor.buscarProveedor);
            ps.setInt(1, codigo_p);
            rs = ps.executeQuery();
            rs.next();

            Proveedor p = new Proveedor();
            p.setId_p(rs.getInt("id_p"));

            p.setNombre_p(rs.getString("empresa_p"));
            p.setEmpresa_p(rs.getString("empresa_p"));//es el mismo setNombre_p...Hubo confusion

            p.setContacto_p(rs.getString("contacto_p"));
            p.setNrc_p(rs.getString("nrc_p"));
            p.setNit_p(rs.getString("nit_p"));
            p.setTel_p(rs.getString("telefono_p"));
            p.setEmail_p(rs.getString("email_p"));
            p.setDireccion_p(rs.getString("direccion_p"));
            p.setLimite_credito_p(rs.getDouble("limite_credito_p"));
            p.setPlazo_p(rs.getInt("plazo_p"));
            p.setGiro_p(rs.getString("giro_p"));
            p.setPercepcion_p(rs.getString("aplicar_percepcion_p"));
            p.setFax_p(rs.getString("fax_p"));

            /*MUNICIPIO*/
            p.setId_mu(rs.getInt("id_mu"));
            p.setNombre_m(rs.getString("nombre_mu"));

            cnn.close();
            ps.close();
            rs.close();

            return p;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}
